#ifndef _MULTI_VARIBLE_REGRESSION_HPP
#define _MULTI_VARIBLE_REGRESSION_HPP

#include <vector>
#include <stddef.h>

typedef long double Data;
typedef std::vector<Data> DataVector;
typedef std::vector<DataVector> DataMatrix;

Data hypothetical(const DataVector &Xi, const DataVector &theta);

Data costFunction(const DataMatrix &X, const DataVector &Y, const DataVector &theta);

DataVector multipleLinearRegression
    (const DataMatrix &X, const DataVector &Y, 
    Data learningRate = 1e-3);

Data costFunctionDerivation
    (const DataMatrix &X, const DataVector &Y, const DataVector &theta, size_t j);

#endif